package com.hejielife.memento;

/**
 * <hr>
 * 备忘录模式:<br>
 * 在不破坏封装性的前提下，捕获一个对象的内部状态，并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
 * 
 * <hr>
 * <b>适用性 : </b><br>
 * 1.必须保存一个对象在某一个时刻的(部分)状态,这样以后需要时它才能恢复到先前的状态。 <br>
 * 2.如果一个用接口来让其它对象直接得到这些状态，将会暴露对象的实现细节并破坏对象的封装性。 <br>
 */
public class Client {

	public static void main(String[] args) {
		// 定义出发起人
		Originator originator = new Originator();
		// 定义出备忘录管理员
		Caretaker caretaker = new Caretaker();
		// 创建一个备忘录
		caretaker.setMemento(originator.createMemento());
		// 恢复一个备忘录
		originator.restoreMemento(caretaker.getMemento());
	}
}
